/**
 * 功能：坦克游戏1.0
 * 画出坦克
 */
package com.test1;

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class TankGame extends JFrame {
	// 添加部件
	MyPanel mp = null;

	public static void main(String[] args) {

		TankGame tg = new TankGame();

	}

	// 构造函数
	public TankGame() {
		mp = new MyPanel();

		// 添加组件
		this.add(mp);
		this.addKeyListener(mp);
		// 设置窗体大小
		this.setSize(400, 300);
		// 设置标题
		this.setTitle("我的坦克游戏1.0");
		// 设置起初位置
		this.setLocation(200, 200);
		this.setIconImage((new ImageIcon("Image//tk.jpg")).getImage());
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
	}
}

// 我的面板
class MyPanel extends JPanel implements KeyListener {

	// 创建一个我的坦克组
	Hero hero = null;
	// 定义敌人坦克
	Vector<EnemyTank> ets = new Vector<EnemyTank>();

	int enSize = 3;

	// 构造函数
	public MyPanel() {

		hero = new Hero(100, 100);
		// 初始化敌人坦克
		for (int i = 0; i < enSize; i++) {
			// 创建敌人坦克对象
			EnemyTank et = new EnemyTank((i + 1) * 50, 15);
			et.setDirect(3);
			et.setType(0);
			// 加入
			ets.add(et);
		}

	}

	// 重写panit
	public void paint(Graphics g) {

		super.paint(g);

		g.fillRect(0, 0, 400, 300);
		// 画出自己的坦克
		drawtank(hero.getX(), hero.getY(), hero.getDirect(), 1, g);
		for (int i = 0; i < ets.size(); i++) {
			drawtank(ets.get(i).x, ets.get(i).y, ets.get(i).direct,
					ets.get(i).type, g);
		}
	}

	// 画出坦克的函数
	public void drawtank(int x, int y, int direct, int type, Graphics g) {
		// 判断什么坦克
		switch (type) {
		case 0:
			g.setColor(Color.cyan);
			break;
		case 1:
			g.setColor(Color.yellow);
			break;
		}

		// 判断方向
		switch (direct) {
		case 1:
			// g.setColor(Color.red);

			// 画出我的坦克（到时封装成一个函数）
			// 1\画出一个左边矩形
			g.fill3DRect((x - 15), (y - 15), 8, 30, false);
			// 2、画出一个右边的矩形
			g.fill3DRect((x + 7), y - 15, 8, 30, false);
			// 3、画出一个中间的矩形
			g.fill3DRect((x - 7), (y - 10), 14, 20, false);
			// 4、画出一个中间的圆形
			g.fillOval((x - 8), (y - 7), 14, 14);
			// 4、画出一个中间的线
			g.drawLine(x, y - 15, x, y);
			break;

		case 2:
			// 1\画出一个上边矩形
			g.fill3DRect((x - 15), (y - 15), 30, 8, false);
			// 2、画出一个下边的矩形
			g.fill3DRect((x - 15), (y + 7), 30, 8, false);
			// 3、画出一个中间的矩形
			g.fill3DRect((x - 10), (y - 7), 20, 14, false);
			// 4、画出一个中间的圆形
			g.fillOval((x - 7), (y - 8), 14, 14);
			// 4、画出一个中间的线
			g.drawLine(x, y, (x + 15), (y));
			break;

		case 3:
			// 1\画出一个左边矩形
			g.fill3DRect((x - 15), (y - 15), 8, 30, false);
			// 2、画出一个右边的矩形
			g.fill3DRect((x + 7), (y - 15), 8, 30, false);
			// 3、画出一个中间的矩形
			g.fill3DRect((x - 7), (y - 10), 14, 20, false);
			// 4、画出一个中间的圆形
			g.fillOval((x - 8), (y - 7), 14, 14);
			// 4、画出一个中间的线
			g.drawLine(x, y, x, (y + 15));
			break;

		case 4:
			// 1\画出一个上边矩形
			g.fill3DRect((x - 15), (y - 15), 30, 8, false);
			// 2、画出一个下边的矩形
			g.fill3DRect((x - 15), (y + 7), 30, 8, false);
			// 3、画出一个中间的矩形
			g.fill3DRect((x - 10), (y - 7), 20, 14, false);
			// 4、画出一个中间的圆形
			g.fillOval((x - 7), (y - 9), 14, 14);
			// 4、画出一个中间的线
			g.drawLine(x - 15, y, (x), (y));
			break;
		}

	}

	@Override
	public void keyTyped(KeyEvent e) {
		// TODO 自动生成的方法存根

	}

	@Override
	public void keyPressed(KeyEvent e) {
		// TODO 自动生成的方法存根
		if (e.getKeyCode() == KeyEvent.VK_UP) {
			this.hero.moveUp();
			this.hero.setDirect(1);// 设置方向
		} else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
			this.hero.moveRight();
			this.hero.setDirect(2);// 设置方向
		} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
			this.hero.moveDown();
			this.hero.setDirect(3);// 设置方向
		} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
			this.hero.moveLeft();
			this.hero.setDirect(4);// 设置方向
		}
		this.repaint();
	}

	@Override
	public void keyReleased(KeyEvent e) {
		// TODO 自动生成的方法存根

	}

}

